PHP 한글 초,중,종성 분리하기c
하우코드
본문
출처: 그누보드 - 한글 초,중,종성 분리하기 > 개발자팁 (sir.kr)
1년 2개월 전에 깃허브에 올려둔 자료입니다.
의외로 필요한 분들이 많을까 올려드립니다.
원본 코드(js판) 출처는 명신님의 블로그(IT 소시민의 소소한 이야기) - http://dream.ahboom.net/entry/%ED%95%9C%EA%B8%80-%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C-%EC%9E%90%EC%86%8C-%EB%B6%84%EB%A6%AC-%EB%B0%A9%EB%B2%95 입니다.
js의 charCodeAt를 PHP에서 사용하기 위해 참고한 소스코드는 다음 출처에 있습니다.
<?php
/* 자바스크립트 한글 자모 분리를 PHP에서.
*/
$jaum = array('ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ', 'ㄹ', 'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ');
$moum = array('ㅏ', 'ㅐ', 'ㅑ', 'ㅒ', 'ㅓ', 'ㅔ', 'ㅕ', 'ㅖ', 'ㅗ', 'ㅘ', 'ㅙ', 'ㅚ', 'ㅛ', 'ㅜ', 'ㅝ', 'ㅞ', 'ㅟ', 'ㅠ', 'ㅡ', 'ㅢ', 'ㅣ');
$bachim = array('', 'ㄱ', 'ㄲ', 'ㄳ', 'ㄴ', 'ㄵ', 'ㄶ', 'ㄷ', 'ㄹ', 'ㄺ', 'ㄻ', 'ㄼ', 'ㄽ', 'ㄾ', 'ㄿ', 'ㅀ', 'ㅁ', 'ㅂ', 'ㅄ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅊ', 'ㅌ', 'ㅍ', 'ㅎ');
/* // 테스트용 문자열
*/
$munja = "맑";
/* // 한글 이외 다른 문자 제거
*/
$munja = preg_replace('[^가-힣]', '', $munja);
/*
// 자바스크립트의 charCodeAt 구현 코드.
*/
function JS_charCodeAt($str, $index) {
$utf16 = mb_convert_encoding($str, 'UTF-16LE', 'UTF-8');
return ord($utf16[$index*2]) + (ord($utf16[$index*2+1]) << 8);
}
$munjaCode = JS_charCodeAt($munja, 0);
/*
// 0xAC00 => 한글 첫 글자인 '가'
*/
$munjaBeonho = $munjaCode - 0xAC00;
$jong = $munjaBeonho % 28;
$jung = (($munjaBeonho - $jong) / 28) % 21;
$cho = ((($munjaBeonho - $jong) / 28) - $jung) / 21;
echo "Cho = {$jaum[$cho]}".PHP_EOL;
echo "Jung = {$moum[$jung]}".PHP_EOL;
echo "Jong = {$bachim[$jong]}".PHP_EOL;
댓글목록
등록된 댓글이 없습니다.